<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务，帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2024 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件，不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types=1);

// 声明当前文件的命名空间（对应目录结构）
// 该控制器位于admin模块下的admin子分组中
namespace app\admin\controller\admin;

// 引入依赖项
use think\response\Json;         // ThinkPHP的JSON响应类
use app\admin\controller\Controller; // 后台控制器基类
use app\admin\model\admin\User as AdminUserModel; // 管理员模型（使用别名避免命名冲突）

/**
 * 超管后台管理员控制器
 * 负责管理员账号的详细信息查看和更新操作
 * @package app\store\controller
 */
class User extends Controller
{
    /**
     * 强制验证当前访问的控制器方法method
     * 例: [ 'login' => 'POST' ]
     * @var array
     */
    protected array $methodRules = [
        'detail' => 'GET',   // 仅允许GET方式访问详情方法
        'renew' => 'POST',   // 仅允许POST方式访问更新方法
    ];

    /**
     * 获取当前登录管理员详细信息
     * 通过session中存储的admin_user_id查询管理员模型
     * @return Json 返回JSON格式响应，包含：
     * - userInfo: 管理员详细信息对象
     */
    public function detail(): Json
    {
        // 从session获取当前管理员ID并查询详细信息
        $userInfo = AdminUserModel::detail($this->admin['user']['admin_user_id']);
        return $this->renderSuccess(['userInfo' => $userInfo]);
    }

    /**
     * 更新当前管理员账户信息
     * 处理表单提交数据并更新数据库记录
     * @return Json 返回操作结果JSON响应：
     * - 成功：返回成功消息
     * - 失败：返回错误信息（优先显示模型验证错误）
     */
    public function renew(): Json
    {
        // 获取当前用户信息
        $model = AdminUserModel::detail($this->admin['user']['admin_user_id']);
        
        // 调用模型更新方法，传入POST表单数据
        if ($model->renew($this->postForm())) {
            return $this->renderSuccess('更新成功');
        }
        // 失败时优先返回模型错误信息，否则返回默认错误
        return $this->renderError($model->getError() ?: '更新失败');
    }
}
